Nash equilibrium
cp
Knitro
AMPL
short
= 0; /* production vector */
var Q = sum {i in Rn} q[i];
var divQ = (5000/Q)**(1/gamma);
var s;
slack {i in Rn}: s=c[i] + (L[i] * q[i])**(1/beta[i])
- divQ - q[i] * (-1/gamma) * divQ / Q;
feas {i in Rn}: /* delf - p - q(I)*delp */
q[i] complements
0 <= s <= Infinity;
set initpoint := 1 .. 4;
param initval {Rn,initpoint} >= 0;
data;
param c :=
1 5
2 3
3 8
4 5
5 1
6 3
7 7
8 4
9 6
10 3 ;
param beta :=
1 1.2
2 1
3 .9
4 .6
5 1.5
6 1
7 .7
8 1.1
9 .95
10 .75 ;
param initval
: 1 2 3 4 :=
1 1 10 1.0 7
2 1 10 1.2 4
3 1 10 1.4 3
4 1 10 1.6 1
5 1 10 1.8 18
6 1 10 2.1 4
7 1 10 2.3 1
8 1 10 2.5 6
9 1 10 2.7 3
10 1 10 2.9 2 ;
]]>
for {point in initpoint}
{
printf "Start point %d\n", point;
let{i in Rn} q[i] := initval[i,point];
solve;
printf "complementary errors are:\n";
display max{i in 1.._nccons} abs(_ccon[i]), min{i in 1.._ncons} _con[i].slack;
printf "\nProduction is:\n";
display q;
}